﻿using Pe.Petecos.Comercial.Cross.Core.Constantes;
using Pe.Petecos.Comercial.Infraestructura.Core.Contract.General;
using Pe.Petecos.Comercial.Infraestructura.Model.General;
using Pe.Petecos.Comercial.Infraestructura.Repository.Base;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pe.Petecos.Comercial.Infraestructura.Repository.Implements.General
{
    public class ArticuloRepository : QueryRepository, IArticuloRepository
    {
        public List<ArticuloLogic> Buscar(int codigoArticulo = 0, string codigoCategoriaArticulo = "", string codigoEstado = "", string nombreArticulo = "")
        {
            SqlParameter[] parametros = new SqlParameter[]
            {
                new SqlParameter("CODIGO_ARTICULO", SqlDbType.Int) { Value = (object)codigoArticulo ?? DBNull.Value },
                new SqlParameter("CODIGO_CATEGORIA_ARTICULO", SqlDbType.VarChar) { Value = (object)codigoCategoriaArticulo ?? DBNull.Value },
                new SqlParameter("CODIGO_ESTADO", SqlDbType.VarChar) { Value = (object)codigoEstado ?? DBNull.Value },
                new SqlParameter("NOMBRE_ARTICULO", SqlDbType.VarChar) { Value = (object)nombreArticulo ?? DBNull.Value },
                new SqlParameter("PARAMETRO_ESTADO_GENERICO", SqlDbType.Int) { Value = DatosConstantes.Parametro.EstadoGenerico },
                new SqlParameter("PARAMETRO_CATEGORIA_ARTICULO", SqlDbType.Int) { Value = DatosConstantes.Parametro.CategoriaArticulo }
            };

            return this.dataBaseProvider.ExecuteStoreProcedure<ArticuloLogic>("GRL.USP_ARTICULO_SEL", parametros).ToList();
        }


        public List<ArticuloProveedorLogic> BuscarArticuloProveedor(int codigoArticulo = 0, string codigoCategoriaArticulo = "", string codigoEstado = "", string nombreArticulo = "")
        {
            SqlParameter[] parametros = new SqlParameter[]
            {
                new SqlParameter("CODIGO_ARTICULO", SqlDbType.Int) { Value = (object)codigoArticulo ?? DBNull.Value },
                new SqlParameter("CODIGO_CATEGORIA_ARTICULO", SqlDbType.VarChar) { Value = (object)codigoCategoriaArticulo ?? DBNull.Value },
                new SqlParameter("CODIGO_ESTADO", SqlDbType.VarChar) { Value = (object)codigoEstado ?? DBNull.Value },
                new SqlParameter("NOMBRE_ARTICULO", SqlDbType.VarChar) { Value = (object)nombreArticulo ?? DBNull.Value },
                new SqlParameter("PARAMETRO_ESTADO_GENERICO", SqlDbType.Int) { Value = DatosConstantes.Parametro.EstadoGenerico },
                new SqlParameter("PARAMETRO_CATEGORIA_ARTICULO", SqlDbType.Int) { Value = DatosConstantes.Parametro.CategoriaArticulo }
            };

            return this.dataBaseProvider.ExecuteStoreProcedure<ArticuloProveedorLogic>("GRL.USP_ARTICULO_PROVEEDOR_SEL", parametros).ToList();
        }
    }
}
